Протокол CSMA/CD (Ethernet). Ethernet является типичным представителем сетей с коллективным доступом, опознанием несущей и обнаружением конфликтов (CSMA/CD). Для передачи сообщений адресуемому приемнику со скоростью 10 Мбит/с используется коаксиальный кабель. Сообщения Ethernet пересылаются «пакетами» с преамбулой и контролем ошибок. Протокол передачи выглядит примерно таким образом: (а) ждите прекращения активности в сети; (б) начинайте передачу своего пакета (см. ниже); (в) продолжая передачу, одновременно контролируйте наложение сообщений («конфликт»); (г) (1) пока наложений нет, продолжайте передавать свое сообщение, но (2) если вы обнаруживаете наложение, пошлите сигнал затора сети (чтобы все знали, что обнаружен конфликт), затем прекратите передачу, выждите случайный интервал времени и попробуйте снова; после каждой последовательной неудачи выжидайте больший по величине «случайный» интервал времени.
Сообщения сети Ethernet передаются относительно короткими пакетами (максимально 1 Кбайт), каждый из которых включает заголовок (идентифицирующий отправителя и получателя), несколько байт с информацией о длине пакета, его типе и последовательном номере, затем группу собственно байтов данных и, наконец, контрольную сумму циклического избыточного кода (CRC), с помощью которой получатель может проверить правильность передачи сообщения. Заметьте, что конфликт может произойти только в начале передачи пакета, поскольку (по правилу (а), см. выше) передача, длящаяся более удвоенного времени обхода сети, прерываться уже не будет.
Стандарт Ethernet, изобретенный фирмой Xerox, используется сейчас очень широко. Он достаточно широкополосен для большинства локальных сетей, а его производительность, благодаря протоколу случайных повторных передач, ухудшается при высокой загрузке не очень быстро. Контроллеры Ethernet можно найти для большинства серьезных микрокомпьютеров (VAX, IBM PC и т. д.) и магистралей (Multibus, VME); Ethernet является официально принятой сетью для популярных рабочих станций Sun и NeXT. Сеть Ethernet может иметь протяженность до 1 км на сегмент и содержать до 2 повторителей; можно также использовать волоконно-оптические «мосты» большей длины. Несколько настольных компьютеров могут совместно использовать многопортовый RS-232-сервер, выступающий в качестве узла на коаксиальном кабеле Ethernet. Серверы могут также обслуживать разделяемые между пользователями ресурсы, такие, как принтеры и большие диски.
Кольцевая сеть с маркерным доступом. В кольцевой сети с маркерным доступом каждый узел соединяется с соседним однонаправленной линией так, чтобы все узлы были объединены в кольцо. Конфликты здесь не допускаются, а правила игры выглядят следующим образом. Представьте себе некоторый объект (маркер); тот, у кого он имеется, может посылать сообщения, в то время как остальные могут только «слушать». В кольцевой сети с маркерным доступом маркер представляет собой короткое сообщение, передаваемое соседнему узлу, как только его владелец закончил пересылку пакета. В любой момент времени маркером владеет один из узлов; именно он имеет право посылать сообщения. Как и в сети Ethernet (да и в любой другой разумной сети), сообщения пакетизированы, причем часто используется формат SDLC (Synchronous Data Link Control — синхронное управление передачей данных: один пакет = флаг + адрес + заголовок + сообщение + контрольная сумма + флаг). Пакеты сообщений циркулируют по сети до тех пор, пока адресуемый получатель не примет их. После того, как отправитель закончил передачу всего сообщения (обычно состоящего из многих пакетов), он посылает маркер. Маркер циркулирует по кольцу до тех пор, пока какой-то другой узел в сети, желающий передать сообщение, не поглотит его, став, таким образом, новым владельцем маркера.
LocalTalk. LocalTalk (первоначально Appletalk), разработанная (угадайте, кем?) фирмой Apple Computer, представляет собой упрощенную сеть с конфликтами. Это не кольцевая сеть, а линейная. Один из узлов может передавать, остальные слушают. В качестве среды передачи используется одна симметричная пара; сигналы в стандарте RS-422 поступают на нее из узлов через трансформаторы. Формат пакета соответствует стандарту SDLC. Максимальная протяженность сети составляет 330 м, и к ней можно подключить до 32 узлов. Пропускная способность сети составляет 230,4 Кбит/с. Совместимый вариант, известный под именем PhoneNET (Farallon Computing Inc.) использует телефонные кабели и соединители и, как утверждается, работает при расстояниях до 1300 м.
Протокол сети схож с Ethernet, но проще: если вы не слышите передачу по сети, вы можете посылать свой пакет. Аппаратура сети не пытается обнаружить конфликты: она просто передает принятые пакеты с правильными контрольными суммами следующему уровню программного обеспечения. Конфликт обычно разрушает сталкивающиеся пакеты, приводя к неправильным значениям обеих контрольных сумм; в результате программное обеспечение просто не получает эти пакеты! Обнаружить ошибку — дело программного обеспечения. Например, отправитель сообщения ожидает ответ; если ответ не приходит в течение некоторого времени, отправитель инициирует идентичное сообщение и ждет снова. LocalTalk относится к сетям с протоколом CSMA/CA; СА здесь обозначает Collision Avoidance — избежание конфликтов, в противоположность обнаружению конфликтов в сети Ethernet.
В сети LocalTalk предусмотрены протоколы для совместного использования файлов и ресурсов (принтеров, модемов и проч.), а также способ наименования устройств, подключенных к сети. Можно даже раздобыть интерфейсы LocalTalk для «не-Аррlе»-компьютеров, что дает вам возможность пересылать файлы между компьютерами типов Macintosh, IBM и UNIX, а также совместно использовать такие ресурсы, как лазерный принтер.
10.22. Пример интерфейса: аппаратная упаковка данных
Если все ваши приборы подключаются к стандартной интерфейсной магистрали (например, GPIB), ваши дела блестящи: просто купите интерфейсную плату для вашего компьютера и несколько кабелей, соедините все вместе и наймите программиста. Талант тут не требуется, только деньги. Однако эта глава посвящена магистральным интерфейсам, и мы хотели бы завершить ее примером законченной разработки.
Надо полагать, что вы, как и мы, не выбрасываете все ваши работоспособные приборы, если появляется что-нибудь новенькое. Некоторые исключительно полезные приборы были созданы еще до эпохи GPIB; в них можно вдохнуть новую жизнь, смастерив к ним интерфейс для подключения к лабораторному компьютеру. Например, частотомер с 8-разрядным цифровым индикатором скорее всего имеет на задней панели «цифро-последовательный, бит-параллельный» выход, на котором появляются друг за другом индицируемые цифры в двоично-кодированном десятичном коде (BCD); весьма вероятно, что скорость вывода цифр совпадает со скоростью регенерации индикатора. Контролировать временные соотношения вы не можете; каждая достоверная цифра, вместе с ее трехбитным адресом позиции в числе, сопровождается стробом. Такого рода прибор скорее всего использует выходные уровни TTL.
На рис. 10.23 показано, как подключить такой прибор к IBM PC.
Рис. 10.23. Символьно-последовательный интерфейс.
Это законченный интерфейс, вместе с флагом состояния, прерываниями и выбираемым адресом порта ввода-вывода. Работа интерфейса начинается в левом нижнем углу рисунка, где обозначены данные, посылаемые из частотомера: последовательные цифры, их адреса (0–7) и стробирующий импульс STROBE7, говорящий о достоверности данных. Частотомер посылает цифры от самой младшей (LSD) до самой старшей (MSD), так что весь цикл заканчивается приемом самой старшей цифры (разряда 7). Восемь регистров `173 (4-разрядные D-регистры с тристабильными выходами) фиксируют последовательные цифры; для этого их информационные входы объединены, а на тактовые входы подаются отдельные сигналы с дешифратора адреса цифр. Обратите внимание на использование микросхемы `138-стробируемого дешифратора 1 из 8, с помощью которого из сигналов адреса и строба образуются тактовые сигналы для фиксации цифр.
Таким образом, выходные данные частотомера фиксируются в восьми 4-разрядных регистрах, выходы которых образуют 4 группы по 2 цифры (8 бит) в группе. PC может принять все восемь цифр четырьмя командами IN ввода данных шириной 1 байт из четырех последовательных адресов портов ввода-вывода (начиная с адреса, установленного на DIP-переключателе). Можно даже поступить еще лучше, читая данные из 16-разрядного регистра (т. е. выполняя вместо команды IN AL,DX, команду IN AX,DX), что приведет к двум последовательным операциям чтения байтов из двух соседних портов ввода-вывода. Обратите внимание на простоту схемы дешифрации адреса. 8-разрядный компаратор `682 выдает низкий уровень на выходе, когда 7 старших бит адреса совпадают с комбинацией, установленной на переключателях (при условии, что этот зануда AEN находится в низком состоянии); этим «базовым адресом» разрешается дешифратор 1 из 8 `138, стробируемый сигналом IOR', который декодирует три младшие бита адреса и генерирует отдельные импульсы ввода, соответствующие последовательным адресам портов. Это весьма распространенный способ дешифрации адресов, так как обычно вы назначаете различным регистрам интерфейса несколько последовательных адресов портов.